package com.li.proxy.service;


/**
 * 代理对象
 * 代理对象和目标对象要具有相同的行为，就要实现同一个或同一些接口
 * 客户端在使用代理对象的时候就像在使用目标对象一样
 */
public class OrderServiceProxy implements OrderService {
    //将目标对象作为代理对象的一个属性，这种关系叫做关联关系，比继承关系耦合度低
    //注意：这里要写公共接口类型
    private final OrderService target;

    //创建代理对象的时候，传递一个目标对象给代理对象
    public OrderServiceProxy(OrderService orderService) {
        this.target = orderService;
    }

    @Override
    public void generate() {
        long begin = System.currentTimeMillis();
        target.generate();
        long end = System.currentTimeMillis();
        System.out.println("执行耗时：" + (end - begin));
    }

    @Override
    public void modify() {
        long begin = System.currentTimeMillis();
        target.modify();
        long end = System.currentTimeMillis();
        System.out.println("执行耗时：" + (end - begin));
    }

    @Override
    public void detail() {
        long begin = System.currentTimeMillis();
        target.detail();
        long end = System.currentTimeMillis();
        System.out.println("执行耗时：" + (end - begin));
    }
}
